#pragma once

#include "Common.h"
#include "InputEvent.h"

/**
* @file Component.h
* @brief Base class for all engine object
*/
class Component
{
public:
	Component();
	virtual ~Component();

	static const std::vector<Component* const>* const
		GetComponentsPtr()
	{
		return &components;
	}

	static void ClearComponents()
	{
		components.clear();
	}
	
	virtual void Start();
	virtual void Update(float dt);
	virtual void Draw();
	virtual void Stop();
	virtual void NotifyInput(const InputEvent& inputEvent);

private:
	static std::vector<Component* const> components;
};

